قرار دادن متن به صورت عمودی در یک کنترل Text Box
ابتدا یک کنترل Picture Box به فرم اضافه کنید. که به طور پیش فرض Picture1 ایجاد می شود. خصوصیت AuotRedraw کنترل مذبور را به True تنظیم کنید. بعد یک کنترل Text Box به فرم روی کنترل Picture Box اضافه کنید. Text1 به وجود می اید و سپس خصوصیت MultiLine این را به True تنظیم کنید. بعد این کدها را در فرمتون کپی کنید Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long Const WM_USER = &H400 Const EM_GETLINECOUNT = &HBA Dim numlines As Long Private Sub Form_Load() Dim ht As Integer Text1.Left = 0 Text1.Height = Picture1.Width - 400 Text1.Width = Picture1.TextHeight("A") Text1.Top = (Picture1.Height - Text1.Height) / 2 + 170 Text1.Visible = True numlines = 1 End Sub Private Sub Text1_Change() Dim ret As Long Dim ht As Long ret = SendMessage(Text1.hwnd, EM_GETLINECOUNT, 0, ByVal 0&) If ret <> numlines Then ht = Picture1.TextHeight("A") Text1.Top = (Picture1.Height - Text1.Height) / 2 + 170 numlines = ret SendKeys "{PGUP}", True Text1.SelStart = Len(Text1) End If End Sub پاسخ اقا محمد اسماعیل حسنی که خواسته بودند نحوه ذخیره متن داخل یک TextBox رو توضیح بدم یک فرم خالی درست کنید و فقط یک TextBox روی ان قرار دهید و سپس این کدها رو داخل فرم کپی کنید Private Declare Function WritePrivateProfileString Lib "kernel32" Alias "WritePrivateProfileStringA" (ByVal lpApplicationName As String, ByVal lpKeyName As Any, ByVal lpString As Any, ByVal lpFileName As String) As Long Private Declare Function GetPrivateProfileString Lib "kernel32" Alias "GetPrivateProfileStringA" (ByVal lpApplicationName As String, ByVal lpKeyName As Any, ByVal lpDefault As String, ByVal lpReturnedString As String, ByVal nSize As Long, ByVal lpFileName As String) As Long Private Sub Form_Load() Dim buf As String buf = Space(255) GetPrivateProfileString "form1", "textbox1", "10", buf, 255, "c:\testini.ini" Text1.Text = buf End Sub Private Sub Form_Unload(Cancel As Integer) WritePrivateProfileString "form1", "textbox1", Text1.Text, "c:\testini.ini" End Sub و ضمنأ من ویژوال بیسیک فارسی رو با خود ویژوال بیسیک 6 و C++6 نوشتم. توجه : یاهو مسنجر من خرابه و تا اطلاع ثانوی نمیتوانم با هیچ کس چت کنم.ببخشید. اقا کمال برنامه ای رو که خواسته بودید براتون میل کردم. برنامه درخواستی اقای نفوذگر تنها(Hacker alone) فقط یک فرم درست کن و این کدها رو توش کپی کن البته شاید... فعلا چون نمی خواستم منتظرت نگذارم اینو گذاشتم قبلا یه همچین برنامه ای داشتم ولی باورت میشه شاید بیش از نیم ساعت تو هاردم گشتم ولی پیداش نکردم اگه پیداش کردم حتما خبرت میکنم و میزارمش یا شاید هم اگه وقت کردم نوشتمش Private Const SHFD_CAPACITY_DEFAULT = 0 Private Const SHFD_CAPACITY_360 = 3 Private Const SHFD_CAPACITY_720 = 5 Private Const SHFD_FORMAT_QUICK = 0 Private Const SHFD_FORMAT_FULL = 1 Private Declare Function SHFormatDrive Lib "shell32" (ByVal hwndOwner As Long, ByVal iDrive As Long, ByVal iCapacity As Long, ByVal iFormatType As Long) As Long Private Sub Form_Load() SHFormatDrive Me.hWnd, 2, SHFD_CAPACITY_DEFAULT, SHFD_FORMAT_QUICK End Sub اقا حامد گفته بودن من چه کتابهایی برای یادگیری VB میخونم یاید بگم: اموزش ویژوال بیسیک در 21 روز اموزش C++ در 21 روز ( که تا حدودی مرتبط است ) اموزش برنامه نویسی تحت اینترنت با ویژوال بیسیک 211 نکته برای برنامه نویسان ویژوال بیسیک (چکیده MSDN ) 500 تابع کاربردی API و ویژوال بیسیک توسط داییم که استاد کامپیوتر به من فقط معرفی شد که من خودم با پشتکارم یاد گرفتمش و هیچ کلاس اموزشی هم نرفتم آشنایی با تابع Shell Function Shell(PathName, [WindowStyle]) As Double تابع shell مثل run ویندوز برای برنامه نویسی است PathName : آدرس محل برنامه ای که قرار است اجرا شود WindowStyle : حالت باز شدن پنجره برنامه می باشد کاربرد: مثلا برنامه P.exe را در شاخه "c:\Mahdi\spy" دارید. فراخوانی برنامه به صورت زیر می باشد . Call shell "c:\Mahdi\spy\p.exe" در صورتی که حالات نمایش پنجره را مشخص نکنید . مثل مثال بالا . نمایش پنجره همان نمایش پیش فرض ویندوز می باشد. استفاده از تایع sendkeys خوب اینجا می خوام یک کد کاربردی دیگه رو بهتون بگم . این کد باعث می شه که وقتی شما رویداد خاصی رو اجرا مکنید , کلید خاصی از کیبرد اجرا شود یعنی مثلاً اگر شما روی یک Textbox هستید و کلید Enter را فشردید عملی معادل فشردن کلید ..... , Tab ,Delete,Pagedown , F1 ,F2 روی دهد : Private Sub TextBox_KeyPress(KeyAscii As Integer) If KeyAscii = 13 Then SendKeys "{tab}" End If End Sub |
||
![]() |
![]() |
|
بخش اول : تعاریف مربوط به نمایش درختی گره ( Node ) : بهترین ایده این است که یک گره را مانند یک شاخه منشعب در یک درخت فرض کنیم. هرگره نشان دهنده یک عضو است. یک گره میتواند هر تعدتد زیر گره را نیز داشته باشد. برادر ( Subline ) : یک برادر گره دیگری است که در همان انشعاب گره مذکور قرار دارد فرزندان ( Childern ) : فرزندان به زیر گره های گره جاری گفته میشود. بعضی مواقع به انها فرزند هم گفته میشود. پدر ( Parent ) : پدر گره ای است که در بالای گره جاری قرار دارد. همه گره ها به جزء گره ریشه دارای پدر می باشند.
بخش دوم : اضافه کردن گره به درخت
در این بخش شما به کنترل های زیر نیاز خواهید داشت: یک کنترل Tree View که در قسمت کامپوننت و بخش Microsoft Common control 6.0 است و ان را به فرمتان بیافزایید یک کنترل ImageList که سه تصویر یا 16*16 یا 32*32 باشد که تصاویر را به صورت زیر نام گذاری کنید ////////////////////// تصویر فولدر بسته با Key >>> Closed تصویر یک فولدر باز شده با Key >> Open تصویر یک فایل با key >> Leaf //////////////////////// کنترل Tree View تعدادی گره را در خود نگه می دارد بنابراین برای اضافه کردن گره به درخت باید یک گره جدید را ابتدا تعریف کنید و سپس ان گره را به مجموعه Tree View اضافه کنید مانند مثال زیر : Dim nodx As Node Set nodx = TreeView1.Nodes.Add(, , "Root", "Root Node") ان را اجرا کنید. شما باید فقط یک عضو را در درخت بنام " Root Node " ببینید. دقت کنید که خاصیتParent در مثال فوق خالی بود. این مساله برای این است که میخواستیم گره مذکور بالاترین گره یا ریشه باشدو بنابراین نباید هیچ پدری داشته باشد. اجازه بدید تعدادی گره به درختمان اضافه کنیم اما این دفعه تصاویری را نیز به گره هایمان اضافه خواهیم کرد: Dim nodx As Node Set TreeView1.ImageList = ImageList1 'Add root Node Set nodx = TreeView1.Nodes.Add(, , "Root", "Root Node","Closed") 'Expand root node so we can see what's under it nodx.ExpandedImage = "Open" nodx.Expanded = True 'Create a child node under the root node Set nodx = TreeView1.Nodes.Add("Root", tvwChild, "Child1", "Child node 1", "Closed") 'Expand this node so we can see what's under it nodx.ExpandedImage = "Open" nodx.Expanded = True 'Create several more children Set nodx = TreeView1.Nodes.Add("Root", tvwChild, "Child2", _ "Child node 2", "Leaf") Set nodx = TreeView1.Nodes.Add("Root", tvwChild, "Child3", _ "Child node 3", "Leaf") Set nodx = TreeView1.Nodes.Add("Root", tvwChild, "Child4", _ "Child node 4", "Leaf") Set nodx = TreeView1.Nodes.Add("Root", tvwChild, "Child5", _ "Child node 5", "Leaf") 'Create two child nodes under the first child node of root Set nodx = TreeView1.Nodes.Add("Child1", tvwChild, "Child1A", _ "Child node 1 A", "Leaf") Set nodx = TreeView1.Nodes.Add("Child1", tvwChild, "Child1B", _ "Child node 1 B", "Leaf") حالا اگر به کد دقت کنید می بینید ما یک ارجاع ئاریم که گره را در خودش ذخیره میکند و Nodx نام دارد. شما میتوتنید این ارجاع را برای اصلاح خواص ان گره استفاده کنید. مانند خطوط که به شکل زیر امده اند: nodex.expanded=True کاری که این خط انجام میدهد باز کردن یک گره است بنابراین ما میتوانیم گره های فرزند ان را مشاهده کنیم. ان مانند وقتی است که کاربر روی یک گره کلیک می کند تا خودشان را باز کنند. این کار بوسیله این کد قایل انجام است.ادامه دهید و ان را اجرا کنید. شما خواهید دید که گره ریشه اصلی حالا 5 فرزند در زیر دارد و اولین انها دو فرزند در زیر دارد.
بخش سوم : پیمایش درختی در اینجا نمونه های برای پیمایش درخت برای پیدا کردن همه گرههای زیر یک گره خاص را اوردهایم. مثال زیر مثال ساده ای است که به شما نشان میدهد چگونه همه گره های زیر یک گره خاص را بدست اورید و متن برچسب انها را نمایش دهید: Dim nodx As Node Set TreeView1.ImageList = ImageList1 'Add root Node Set nodx = TreeView1.Nodes.Add(, , "Root", "Root Node", "Closed") 'Expand root node so we can see what's under it nodx.ExpandedImage = "Open" nodx.Expanded = True 'Create a child node under the root node Set nodx = TreeView1.Nodes.Add("Root", tvwChild, "Child1", _ "Child node 1", "Closed") 'Expand this node so we can see what's under it nodx.ExpandedImage = "Open" nodx.Expanded = True 'Create several more children Set nodx = TreeView1.Nodes.Add("Root", tvwChild, "Child2", _ "Child node 2", "Leaf") Set nodx = TreeView1.Nodes.Add("Root", tvwChild, "Child3", _ "Child node 3", "Leaf") Set nodx = TreeView1.Nodes.Add("Root", tvwChild, "Child4", _ "Child node 4", "Leaf") Set nodx = TreeView1.Nodes.Add("Root", tvwChild, "Child5", _ "Child node 5", "Leaf") 'Create two child nodes under the first child node of root Set nodx = TreeView1.Nodes.Add("Child1", tvwChild, "Child1A", _ "Child node 1 A", "Leaf") Set nodx = TreeView1.Nodes.Add("Child1", tvwChild, "Child1B", _ "Child node 1 B", "Leaf") 'Loop though each child of the root node Dim i As Long 'Set nodx to the first child node of root. Set nodx = TreeView1.Nodes("Root").Child 'Loop though each child nod assigning it to nodx For i = 1 To TreeView1.Nodes("Root").Children MsgBox nodx.Text Set nodx = nodx.Next Next فقط بلوک اخر کد در این مثال جدید است. شما میتوانید خاصیت Childern را برای فهمیدن تعداد گره های فرزند یک گره خاص بکار ببرید. خاصیت Children به اولین گره فرزند اشاره میکند و خاصیت Nextبه گره بعدی نسبت به گره جاری اشاره میکند بخش چهارم : رویدادها الان باید درباره چیزهای جدیدی صحبت کنیم. برای مثال ما میخواهیم فقط دو گره را که مانند دایرکتورب در سیستم شما هستند به ان اضافه کنیم. وقتی شما روی گره کلیک کنید ان وقت مسیر واقعی فایل برای ان فولدر را به شما میدهد: Private Sub Form_Load() Dim nodx As Node Set TreeView1.ImageList = ImageList1 'Add Drive Set nodx = TreeView1.Nodes.Add(, , , "c:", "Closed") nodx.ExpandedImage = "Open" nodx.Expanded = True 'Add Folder Set nodx = TreeView1.Nodes.Add(nodx, tvwChild, , "Windows", "Closed") nodx.ExpandedImage = "Open" nodx.Expanded = True 'Add Another Folder Set nodx = TreeView1.Nodes.Add(nodx, tvwChild, , "System", "Closed") nodx.ExpandedImage = "Open" nodx.Expanded = True End Sub Private Sub TreeView1_NodeClick(ByVal Node As MSComctlLib.Node) MsgBox Node.FullPath End Sub وقتی ما روی یک گره در درخت کلیک میکنیم رویداد Node Click روی میدهد و ان گره ای را که کلیک شده بود را به ما بر میگرداند بنابراین دستکاری ان بسیار اسان است. به نظر شما یز خطرناکی در مثال فوق وجود دارد؟ این صحیح است در اینجا هیچ کلیدی برای هر کدام از گره ها وجود ندارد. کلید اختیاری است. دقت کنید که چون من کلیدی ندارم به جای فقط کلید گره که در تابع add برای اضافه کردن یک گره به درخت استفاده میشود. خود گره را بدست میاورم. این علت ارسال شی Nodx به تابع add می باشد. چون ان واقعا فقط یک اشاره گر به گره قبلی است. شما باید قادر باشید که ذر مثال فوق ببینید که کنترل Tree View بخوبی برای نمایش سیستم فایل کارذمیکند. مانند اکسپلورر در ویندوز خاصیت FiullPath هر چیزی را که ما درباره محل فایل نیاز داریم را به خواهد داد. در اینجا یک مثال از رویدادهای Node Click و collapse و Expand است: Private Sub Form_Load() Dim nodx As Node Dim nodr As Node 'Show Root Lines TreeView1.LineStyle = tvwRootLines 'Display Checkboxes TreeView1.Checkboxes = True 'Add Items Set nodx = TreeView1.Nodes.Add(, , , "Item 1") Set nodx = TreeView1.Nodes.Add(, , , "Item 2") Set nodx = TreeView1.Nodes.Add(, , , "Item 3") Set nodx = TreeView1.Nodes.Add(, , , "Item 4") Set nodx = TreeView1.Nodes.Add(, , , "Item 5") nodx.Expanded = True Set nodr = TreeView1.Nodes.Add(nodx, tvwChild, , "Item 6") nodr.Expanded = True Set nodx = TreeView1.Nodes.Add(nodr, tvwChild, , "Item 7") Set nodx = TreeView1.Nodes.Add(nodr, tvwChild, , "Item 8") Set nodx = TreeView1.Nodes.Add(nodr, tvwChild, , "Item 9") Set nodx = TreeView1.Nodes.Add(nodr, tvwChild, , "Item 10") Set nodx = TreeView1.Nodes.Add(nodr, tvwChild, , "Item 11") Set nodx = TreeView1.Nodes.Add(, , , "Item 12") End Sub Private Sub TreeView1_Collapse(ByVal Node As MSComctlLib.Node) MsgBox "Colapsing node: " & Node.Text End Sub Private Sub TreeView1_Expand(ByVal Node As MSComctlLib.Node) MsgBox "Expanding node: " & Node.Text End Sub Private Sub TreeView1_NodeCheck(ByVal Node As MSComctlLib.Node) If Node.Checked Then MsgBox "Node " & Node.Text & " was checked" Else MsgBox "Node " & Node.Text & " was Unchecked" End If End Sub ان را اجرا کنید و روی چک باکسها کلیک کنید. شما باید پیغامی را در یافت کنید که به شما میگوید که این گره شما فقط چک خورده است. حالا سعی کنید بعضی از گره ها را جمع کنید و یا باز کنید و در این حالتها شما پیغامی را از رویدادهای Collapse و Expand در یافت خواهید کرد |
نظرات شما عزیزان:
موضوعات مرتبط: آموزش ، ،
برچسبها: